This study is a monocentric, prospective, observational investigation conducted in Nancy Hospital between 10.10.2017 and 24.05.2022, enrolling 50 adult patients with refractory cardiogenic shock requiring veno-arterial extracorporeal membrane oxygenation (VA-ECMO) support (NCT03327493).
The study was carried out in accordance with the Declaration of Helsinki and approved by the local institutional ethics committee. Written informed consent was obtained from all patients or their legal representatives prior to inclusion.
Cardiogenic shock was defined as a systolic blood pressure (SBP) <90 mmHg or a mean arterial pressure (MAP) <65 mmHg despite adequate volume resuscitation, accompanied by signs of peripheral hypoperfusion (e.g., cold extremities, oliguria, altered mental status) and a cardiac index <2.2 L/min/m². Refractoriness was defined as a hyporesponsiveness to norepinephrine and/or the persistence of profound clinical signs of hypoperfusion despite optimal resuscitation efforts. Eligible patients were adults (≥18 years old) affiliated with a health insurance system. Cardiogenic shock etiologies included acute ischemic coronary artery disease, primary or ischemic-related dilated cardiomyopathy, myocarditis and stress-induced cardiomyopathy. Patients were excluded if cardiogenic shock was secondary to cardiotoxic poisoning, if they were pregnant, or were under legal protective supervision (e.g., court-appointed guardianship).
Clinical, laboratory and echocardiographic parameters were prospectively collected at three predefined timepoints: Day 0 (ECMO implantation), Day 3–5 (early course) and Day of ECMO weaning (ECMO explantation). Blood samples were drawn at each timepoint, immediately centrifuged and plasma was stored at –80°C until analysis. Samples were then transferred to the XXX for cells analysis and INSERM UMR942 laboratory (Paris, France) for cytokine analysis. Quantification of adrenoreceptors β1 and β2 on monocytes and CD4⁺ T lymphocytes was performed using flow cytometry. Cytokine concentrations in plasma, including interleukin (IL) -33, IL-1β, IL-2, IL-4, IL-5, IL-6, IL-8/CXCL8, IL-10, GDF-15, IL-12p70, IL-17A/CTLA-8, IFN-γ, TNF-α and granzyme B, were measured using [XXX].
The expression of β1 (ADRB1) and β2 (ADRB2) adrenergic receptors on circulating immune cell, namely CD4+ T lymphocytes and monocytes, was assessed via flow cytometry. XXX [to be completed from Manon]. Results were expressed as the percentage of cells that were positive for the respective expression receptors.
The aforementioned panel of circulating cytokines and immune mediators was quantified from plasma samples. These biomarkers were selected for their roles in pro- and anti-inflammatory signaling. Measurements were performed using a multiplex bead-based immunoassay (Luminex platform), following the manufacturer’s instructions. XXX [to be completed from Malha].
A standardized weaning protocol was applied to all patients prior to ECMO explantation. At a constant mean arterial pressure (MAP) between 65 and 75 mmHg, cardiac output was assessed by transthoracic echocardiography at two predefined timepoints: 1. Baseline under full support (ECLS flow at 3.0 L/min) and 2. Low-flow test after 45 minutes of reduced ECMO flow (1.5 L/min). Measurements included velocity time integral (VTI) at the left ventricular outflow tract and left ventricular ejection fraction. Changes in norepinephrine and dobutamin dosage during this period were also documented. The decision to explant ECMO was based on clinical tolerance, hemodynamic stability and echocardiographic parameters during the weaning trial.
Baseline clinical, demographic and hemodynamic characteristics were summarized for the overall study population (n = 50). One patient was excluded from the analysis due to being under legal guardianship. Categorical variables were reported as counts and percentages, while continuous variables were expressed as medians and interquartile ranges (IQR). The normality of continuous variables was assessed visually using histograms.
To explore the distribution of ADRB1 and ADRB2 expression over time in relation to clinical outcomes, boxplots were generated at three timepoints (implantation, day 3–5, and explantation). To evaluate the temporal dynamics of ADRB1 and ADRB2 expression across clinical outcomes, we used linear mixed-effects models with time, outcome group (ECMO weaning, bridge to LVAD/transplant, or death), and their interaction as fixed effects. Random intercepts and slopes for time were included to account for intra-patient variability. When appropriate, receptor expression values were log10-transformed. Interaction terms were tested using likelihood ratio tests between full and reduced models, and Type III ANOVA with Kenward-Roger approximation was used for fixed effects.
To assess the association between ADRB1 and ADRB2 expression at the time of ECMO weaning and left ventricular outflow tract velocity-time integral (VTI) measured at 1.5 L/min ECMO flow, patients were stratified according to a VTI threshold of 12 cm. Mann–Whitney U tests were used to compare log-transformed ADRB expression between the two groups (≤12 cm vs >12 cm). Results were visualized using boxplots.
# Blood sample at day 0 before ECMO implant?
df %>%
select(J0_date, j0_bilan_date) %>%
distinct() %>%
slice(1:15)
# A tibble: 15 × 2
J0_date j0_bilan_date
<chr> <chr>
1 17.01.2018 17.01.2018
2 25.01.2018 25.01.2018
3 20.02.2018 20.02.2018
4 30.05.2018 30.05.2018
5 14.06.2018 14.06.2018
6 27.06.2018 27.06.2018
7 01.02.2019 01.02.2019
8 14.02.2019 14.02.2019
9 19.04.2019 19.04.2019
10 26.02.2019 26.02.2019
11 06.02.2018 06.02.2018
12 02.03.2018 02.03.2018
13 07.06.2019 07.06.2019
14 13.06.2019 13.06.2019
15 17.10.2019 17.10.2019
df <- df %>%
mutate(
J0_date = as.Date(J0_date, format = "%d.%m.%Y"),
j0_bilan_date = as.Date(j0_bilan_date, format = "%d.%m.%Y"),
bilan_after_ecmo = case_when(
is.na(J0_date) | is.na(j0_bilan_date) ~ NA_character_,
j0_bilan_date > J0_date ~ "Yes",
TRUE ~ "No"
)
)
table(df$bilan_after_ecmo, useNA = "ifany")
No
47
df %>%
filter(bilan_after_ecmo == "Yes") %>%
select(ID, j0_bilan_date, J0_date, bilan_after_ecmo)
# A tibble: 0 × 4
# ℹ 4 variables: ID <chr>, j0_bilan_date <date>, J0_date <date>,
# bilan_after_ecmo <chr>
df_clean <- df %>%
mutate(
j0_bilan_date = as.Date(j0_bilan_date, format = "%d.%m.%Y"),
J0_date = as.Date(J0_date, format = "%d.%m.%Y"),
datetime_bilan = as.POSIXct(paste(j0_bilan_date, as.character(j0_bilan_heure)), format = "%Y-%m-%d %H:%M", tz = "UTC"),
datetime_ecmo = as.POSIXct(paste(J0_date, as.character(J0_heure)), format = "%Y-%m-%d %H:%M", tz = "UTC"),
time_diff_mins = as.numeric(difftime(datetime_bilan, datetime_ecmo, units = "mins"))
) %>%
filter(!is.na(time_diff_mins))
summary_stats <- df_clean %>%
mutate(time_diff_hours = time_diff_mins / 60) %>%
summarise(
mean_minutes = mean(time_diff_hours),
sd_minutes = sd(time_diff_hours),
min = min(time_diff_hours),
min = max(time_diff_hours)
)
Day-0 blood samples were collected on average -3.47 hours (SD 2.4 hours) before ECMO implantation, ranging from 0 hours before to 0 hours after ECMO cannulation.
df <- df %>%
mutate(
Temp_D0 = round(Temp_D0, 1),
Age = as.numeric(Age),
Gender = case_when(
Gender == 0 ~ "Men",
Gender == 1 ~ "Women",
TRUE ~ as.character(Gender)
),
Preecmo_tte_diam_LV = Preecmo_tte_diam_LV * 10,
Outcome = case_when(
Outcome == 1 ~ "ECMO Weaning",
Outcome == 2 ~ "Bridge to Transplant",
Outcome == 3 ~ "Bridge to LVAD",
Outcome == 4 ~ "Death",
TRUE ~ as.character(Outcome)
),
Pulsepressure_D0 = PAS_D0 - PAD_D0,
outcome_date = str_replace_all(outcome_date, "\\.", "/"),
icu_admiss_date = str_replace_all(icu_admiss_date, "\\.", "/"),
icu_discharge_date = str_replace_all(icu_discharge_date, "\\.", "/"),
deces_date = dmy(deces_date),
icu_admiss_date = dmy(icu_admiss_date),
icu_discharge_date = dmy(icu_discharge_date),
date_levo = dmy(date_levo),
ecmo_start_date = dmy(ecmo_start_date),
ecmo_stop_date = dmy(ecmo_stop_date),
outcome_date = case_when(is.na(deces_date)~ icu_admiss_date + 90, TRUE~deces_date),
diff_days = time_length(interval(icu_admiss_date, outcome_date), "days"),
Time_hosp = time_length(interval(icu_admiss_date, icu_discharge_date), "days"),
as.numeric(icu_discharge_date - icu_admiss_date),
Time_ecmo = time_length(interval(ecmo_start_date, ecmo_stop_date), "days"),
Time_levo = time_length(interval(ecmo_start_date, date_levo), "days"),
jsev_date = dmy(jsev_date),
Time_weaning = time_length(interval(ecmo_start_date, jsev_date), "days"),
Levo_before_ecmo_end = case_when(
Levosimendan == 1 & date_levo >= ecmo_start_date & date_levo <= ecmo_stop_date ~ 1L,
TRUE ~ 0L),
ADR1L_J0_median = case_when(
ADR1L_J0 > median(ADR1L_J0, na.rm = TRUE) ~ "High",
ADR1L_J0 <= median(ADR1L_J0, na.rm = TRUE) ~ "Low"
),
ADR2L_J0_median = case_when(
ADR2L_J0 > median(ADR2L_J0, na.rm = TRUE) ~ "High",
ADR2L_J0 <= median(ADR2L_J0, na.rm = TRUE) ~ "Low"
),
M_ADR1_J0_median = case_when(
M_ADR1_J0 > median(M_ADR1_J0, na.rm = TRUE) ~ "High",
M_ADR1_J0 <= median(M_ADR1_J0, na.rm = TRUE) ~ "Low",
TRUE ~ NA_character_
),
M_ADR2_D0_median = case_when(
M_ADR2_J0 > median(M_ADR2_J0, na.rm = TRUE) ~ "High",
M_ADR2_J0 <= median(M_ADR2_J0, na.rm = TRUE) ~ "Low",
TRUE ~ NA_character_
),
Betablocker = case_when(Betablocker == 1 ~ "YES", Betablocker == 0 ~ "NO"),
dose_tot_dobu_yes_no = droplevels(as.factor(case_when(dose_tot_dobu > 0 ~ "YES", dose_tot_dobu == 0 ~ "NO"))),
levo_in_icu = case_when(
Levosimendan == 1 & Time_levo >= 0 ~ "Yes",
Levosimendan == 1 & Time_levo < 0 ~ "No",
Levosimendan == 0 ~ "No"
),
Levosimendan = case_when(
Levosimendan == 1 ~ "YES",
Levosimendan == 0 ~ "NO",
TRUE ~ NA_character_
),
ische = relevel(as.factor(cause), ref=c("Non ischémique")),
mean_NAD_24H = NADcum_D0*1000/Weight/3600,
mean_DOB_24H = DOBUcum_D0*1000/Weight/3600
)
var.cat <- c("Gender", "HTN", "DM", "Immunodepression", "CKD", "Neurologic_deficit", "Chronic_respiratory_disease", "HF", "Cardiac_arrest_before_canul", "cause","ische", "IABP_D0", "Intubation", "EER_D0", "Outcome", "Betablocker", "Alphablocker", "Levosimendan", "j90_deces", "j28_deces")
var.cont <- c("Age", "BMI", "PAS_D0", "PAD_D0", "PAM_D0", "Pulsepressure_D0", "HR_D0", "Temp_D0", "Preecmo_tte_ef", "Preecmo_tte_vtiao", "mean_NAD_24H", "mean_DOB_24H", "pH_D0", "Sao2_D0", "Paco2_D0", "Lact_D0", "Hco3_D0", "Creat_D0", "Urea_D0", "ALAT_D0", "ASAT_D0", "Bili_D0", "PT_D0", "Tropo_i_hs_D0", "Ntprobnp_D0", "DPP3_D0", "Plq_D0", "Lenght_eer", "Lenght_vm", "Time_hosp", "Time_ecmo")
var.tot <- c(var.cat, var.cont)
table1
Variables | Missing | Overall |
|---|---|---|
n | 47 | |
Age (years) | 0 | 59.0 [51.0, 66.0] |
Gender = Female (%) | 0 | 7 (14.9) |
Body Mass Index (kg/m²) | 3 | 26.5 [23.6, 29.5] |
Hypertension (%) | 0 | 18 (38.3) |
Diabetes Mellitus (%) | 0 | 9 (19.1) |
Heart Failure (%) | 0 | 16 (34.0) |
Chronic Kidney Disease (%) | 0 | 5 (10.6) |
Chronic Respiratory Disease (%) | 0 | 3 ( 6.4) |
Neurological Deficit (%) | 0 | 4 ( 8.5) |
Immunosuppression (%) | 0 | 4 ( 8.5) |
Non ichemic (%) | 0 | 16 (34.0) |
Ischemic (%) | 0 | 31 (66.0) |
Systolic Blood Pressure (mmHg) | 0 | 97.0 [86.5, 109.5] |
Diastolic Blood Pressure (mmHg) | 0 | 63.0 [57.5, 72.0] |
Mean Arterial Pressure (mmHg) | 0 | 73.0 [68.0, 81.0] |
Pulse Pressure (mmHg) | 0 | 32.0 [23.5, 48.5] |
Heart Rate (bpm) | 0 | 96.0 [86.0, 117.0] |
Temperature (°C) | 0 | 36.2 [35.3, 36.8] |
Cardiac Arrest Before Cannulation (%) | 0 | 25 (53.2) |
Intra-Aortic Balloon Pump (%) | 0 | 23 (48.9) |
Intubation (%) | 0 | 34 (72.3) |
Renal Replacement Therapy (%) | 0 | 6 (12.8) |
Pre-ECMO Ejection Fraction (%) | 4 | 20.0 [15.0, 22.5] |
Pre-ECMO Aortic Velocity Time Integral (cm) | 8 | 7.0 [5.7, 8.5] |
Beta-blocker (%) | 0 | 22 (46.8) |
Alpha-blocker (%) | 0 | 3 ( 6.4) |
mean Norepinephrine Dose on cannulation day (gamma/kg/min) | 2 | 0.1 [0.0, 0.2] |
mean Dobutamine Dose on cannulation day (gamma/kg/min) | 2 | 0.9 [0.0, 1.7] |
Levosimendan (%) | 0 | 29 (61.7) |
pH | 0 | 7.4 [7.3, 7.5] |
Oxygen Saturation (%) | 0 | 98.0 [96.0, 99.0] |
PaCO2 (mmHg) | 0 | 32.8 [26.4, 37.7] |
Lactate (mmol/L) | 0 | 2.7 [1.7, 4.7] |
Bicarbonate (mmol/L) | 0 | 19.0 [16.4, 23.0] |
Creatinine (µmol/L) | 0 | 149.0 [98.0, 204.0] |
Urea (mg/dL) | 1 | 11.8 [7.7, 19.0] |
ALT (IU/L) | 0 | 256.0 [83.0, 698.5] |
AST (IU/L) | 0 | 643.0 [144.0, 1188.5] |
Bilirubin (mg/dL) | 1 | 21.0 [12.0, 39.5] |
Prothrombin Time (s) | 12 | 56.0 [37.0, 72.5] |
High Sensitivity Troponin I (ng/L) | 13 | 34363.5 [383.2, 186316.0] |
NT-proBNP (pg/mL) | 24 | 10882.0 [2248.0, 26995.0] |
DPP3 (ng/mL) | 0 | 72.9 [46.2, 150.6] |
Platelet Count (10⁹/L) | 0 | 178.0 [122.5, 273.5] |
Outcome (%) | 0 |
|
Death in ICU | 20 (42.6) | |
Bridge to LVAD | 4 ( 8.5) | |
Bridge to Transplant | 2 ( 4.3) | |
ECMO Weaning | 21 (44.7) | |
Duration of Renal Replacement Therapy (days) | 0 | 0.0 [0.0, 5.0] |
Duration of Mechanical Ventilation (days) | 0 | 5.0 [2.0, 9.5] |
ECMO Duration (days) | 0 | 6.0 [3.0, 9.5] |
ICU Length of Stay (days) | 0 | 14.0 [6.0, 19.5] |
28-day Mortality (%) | 0 | 22 (46.8) |
90-day Mortality (%) | 0 | 27 (57.4) |
table2a
# A tibble: 9 × 2
Parameter `Median [IQR]`
<chr> <chr>
1 delay to weaning test 7 [4–10], n=31
2 ECMO flow (l) 2.2 [1.6–3], n=31
3 Dobutamine cumulative (mg) 0 [0–25], n=31
4 Noradrenaline cumulative (mg) 0 [0–7.1], n=31
5 MAP_baseline (mmHg) 75 [72–80], n=31
6 HR (bpm) 100 [84.5–104], n=31
7 FEVG (%) 35 [30–42.8], n=30
8 Mitral S' (cm/s) 7 [5.9–9], n=29
9 Lactate (mmol/L) 1 [0.8–1.4], n=30
table2b
# A tibble: 2 × 3
Parameter `3L` `1.5L`
<chr> <chr> <chr>
1 MAP (mmHg) 76 [71.25–84.5]; n=18 72.5 [70–81.5]; n=26
2 VTI (cm) 13 [12–15.5]; n=19 14 [12–16.5]; n=27
No significant difference between VTI at 3 L and 1.5 L flow conditions at weaning day (Wilcoxon test, p = 0.529)
Figure2_tot
ggsave("FIGURES/Figure2_ADRB_outcomes.pdf",
plot = Figure2_tot,
width = 200, height = 150, units = "mm",
device = cairo_pdf, bg = "white")
# ADRB1
F3_1_a <- df %>%
select(`jsev_epr_sev_t1_1,5l_itv`, ADR1L_J0) %>%
mutate(VTI_JS = case_when(`jsev_epr_sev_t1_1,5l_itv` > 12 ~ ">12 cm", TRUE ~ "≤12 cm")) %>%
tidyr::drop_na()
mw_VTI1 <- wilcox.test(log1p(ADR1L_J0) ~ VTI_JS, data = F3_1_a)
p_value_VTI <- sprintf("%.3f", mw_VTI1$p.value)
count_data <- F3_1_a %>% group_by(VTI_JS) %>% summarise(n = n(), .groups = "drop")
Figure3a <- ggplot(F3_1_a, aes(x = VTI_JS, y = log1p(ADR1L_J0), fill = VTI_JS)) +
geom_boxplot() +
geom_point(size = 2, alpha = 0.7, position = position_jitter(width = 0.1)) +
geom_text(data = count_data,
aes(x = VTI_JS, y = min(log1p(F3_1_a$ADR1L_J0), na.rm = TRUE) * 1.25, label = paste0("n=", n)),
size = 4, inherit.aes = FALSE) +
scale_fill_manual(values = c("≤12 cm" = "#0072B2", ">12 cm" = "#D55E00")) +
labs(title = "A", x = "VTI measured at 1.5 L/min", y = "% of lymphocytes expressing ADRB1 at ECMO weaning \n (log scale)") +
theme_minimal() + theme(legend.position = "none") +
annotate("text", x = 1.5, y = max(log1p(F3_1_a$ADR1L_J0), na.rm = TRUE), label = paste("p:", p_value_VTI), size = 5)
# ADRB2
F3_2_a <- df %>%
select(`jsev_epr_sev_t1_1,5l_itv`, ADR2L_J0) %>%
mutate(VTI_JS = case_when(`jsev_epr_sev_t1_1,5l_itv` > 12 ~ ">12 cm", TRUE ~ "≤12 cm")) %>%
tidyr::drop_na()
mw_VTI2 <- wilcox.test(log1p(ADR2L_J0) ~ VTI_JS, data = F3_2_a)
p_value_VTI_2 <- sprintf("%.3f", mw_VTI2$p.value)
count_data2 <- F3_2_a %>% group_by(VTI_JS) %>% summarise(n = n(), .groups = "drop")
Figure3b <- ggplot(F3_2_a, aes(x = VTI_JS, y = log1p(ADR2L_J0), fill = VTI_JS)) +
geom_boxplot() +
geom_point(size = 2, alpha = 0.7, position = position_jitter(width = 0.1)) +
scale_fill_manual(values = c("≤12 cm" = "#0072B2", ">12 cm" = "#D55E00")) +
labs(title = "B", x = "VTI measured at 1.5 L/min", y = "% of lymphocytes expressing ADRB2 measured at ECMO weaning \n (log scale)") +
theme_minimal() + theme(legend.position = "none") +
annotate("text", x = 1.5, y = max(log1p(F3_2_a$ADR2L_J0), na.rm = TRUE), label = paste("p:", p_value_VTI_2), size = 5) +
geom_text(data = count_data2,
aes(x = VTI_JS, y = min(log1p(F3_2_a$ADR2L_J0), na.rm = TRUE) * 1.25, label = paste0("n=", n)),
inherit.aes = FALSE, size = 4)
Figure3_tot <- Figure3a | Figure3b +
plot_annotation(title = "Association between VTI at weaning and ADRB1/ADRB2 expression in lymphocyte", tag_levels = c("A","B"))
Figure2_tot
ggsave("FIGURES/Figure3_VTI_Lymphocyte_ADRB.pdf",
plot = Figure3_tot,
width = 200, height = 120, units = "mm",
device = cairo_pdf, bg = "white")
# ADRB1
F4_1 <- df %>%
select(`jsev_epr_sev_t1_1,5l_itv`, M_ADR1_J0) %>%
mutate(VTI_JS = case_when(`jsev_epr_sev_t1_1,5l_itv` > 12 ~ ">12 cm", TRUE ~ "≤12 cm")) %>%
tidyr::drop_na()
mw_3a <- wilcox.test(log1p(M_ADR1_J0) ~ VTI_JS, data = F4_1)
p_value_VTI <- sprintf("%.3f", mw_3a$p.value)
count_data <- F4_1 %>% group_by(VTI_JS) %>% summarise(n = n(), .groups = "drop")
Figure4a <- ggplot(F4_1, aes(x = VTI_JS, y = log1p(M_ADR1_J0), fill = VTI_JS)) +
geom_boxplot() +
geom_point(size = 2, alpha = 0.7, position = position_jitter(width = 0.1)) +
geom_text(data = count_data, aes(x = VTI_JS, y = -3, label = paste0("n=", n)), size = 4, inherit.aes = FALSE) +
scale_fill_manual(values = c("≤12 cm" = "#0072B2", ">12 cm" = "#D55E00")) +
labs(title = "A", x = "VTI measured at 1.5 L/min", y = "% of Monocytes expressing ADRB1 measured at ECMO weaning \n (log scale)") +
theme_minimal() + theme(legend.position = "none") +
annotate("text", x = 1.5, y = max(log1p(F4_1$M_ADR1_J0), na.rm = TRUE), label = paste("p:", p_value_VTI), size = 5)
# ADRB2
F4_2 <- df %>%
select(`jsev_epr_sev_t1_1,5l_itv`, M_ADR2_J0) %>%
mutate(VTI_JS = case_when(`jsev_epr_sev_t1_1,5l_itv` > 12 ~ ">12 cm", TRUE ~ "≤12 cm")) %>%
tidyr::drop_na()
mw_3b <- wilcox.test(log1p(M_ADR2_J0) ~ VTI_JS, data = F4_2)
p_value_VTI_2 <- sprintf("%.3f", mw_3b$p.value)
count_data2 <- F4_2 %>% group_by(VTI_JS) %>% summarise(n = n(), .groups = "drop")
Figure4b <- ggplot(F4_2, aes(x = VTI_JS, y = log1p(M_ADR2_J0), fill = VTI_JS)) +
geom_boxplot() +
geom_point(size = 2, alpha = 0.7, position = position_jitter(width = 0.1)) +
scale_fill_manual(values = c("≤12 cm" = "#0072B2", ">12 cm" = "#D55E00")) +
labs(title = "B", x = "VTI measured at 1.5 L/min", y = "% of Monocytes expressing ADRB2 at ECMO weaning \n (log scale)") +
theme_minimal() + theme(legend.position = "none") +
annotate("text", x = 1.5, y = max(log1p(F4_2$M_ADR2_J0), na.rm = TRUE), label = paste("p:", p_value_VTI_2), size = 5) +
geom_text(data = count_data2, aes(x = VTI_JS, y = min(log1p(F4_2$M_ADR2_J0), na.rm = TRUE) * 1.25, label = paste0("n=", n)), inherit.aes = FALSE, size = 4)
Figure4_tot <- Figure4a | Figure4b +
plot_annotation(title = "Association between VTI at weaning and % of monocytes expressing ADRB", tag_levels = c("A","B"))
Figure4_tot
ggsave("FIGURES/Figure4_VTI_Monocyte_ADRB.pdf",
plot = Figure4_tot,
width = 200, height = 120, units = "mm",
device = cairo_pdf, bg = "white")
F5_1 <- df %>%
select(`jsev_epr_sev_t1_1,5l_itv`, IL6_J0) %>%
mutate(VTI_JS = if_else(`jsev_epr_sev_t1_1,5l_itv` > 12, ">12 cm", "≤12 cm")) %>%
tidyr::drop_na()
mw_F5 <- wilcox.test(log1p(IL6_J0) ~ VTI_JS, data = F5_1)
p_F5 <- sprintf("%.3f", mw_F5$p.value)
n_F5 <- F5_1 %>% count(VTI_JS)
Figure5 <- ggplot(F5_1, aes(x = VTI_JS, y = log1p(IL6_J0), fill = VTI_JS)) +
geom_boxplot() +
geom_point(size = 2, alpha = 0.7, position = position_jitter(width = 0.1)) +
scale_fill_manual(values = c("≤12 cm" = "#0072B2", ">12 cm" = "#D55E00")) +
labs(
title = "Association between VTI and IL-6 at implantation",
x = "VTI measured at 1.5 L/min",
y = "IL-6 at implantation (log scale)"
) +
theme_minimal() + theme(legend.position = "none") +
annotate("text", x = 1.5, y = max(log1p(F5_1$IL6_J0), na.rm = TRUE),
label = paste("p:", p_F5), size = 5, color = "black") +
geom_text(data = n_F5,
aes(x = VTI_JS, y = min(log1p(F5_1$IL6_J0), na.rm = TRUE) * 1.25, label = paste0("n=", n)),
inherit.aes = FALSE, size = 4)
Figure5
ggsave("FIGURES/Figure5_VTI_IL6.pdf",
plot = Figure5,
width = 160, height = 120, units = "mm",
device = cairo_pdf, bg = "white")
fig_IL6 <- plot_cytokine(df, "IL6")
fig_IL5 <- plot_cytokine(df, "IL5")
fig_IL8 <- plot_cytokine(df, "IL8/CXCL8")
fig_IL10 <- plot_cytokine(df, "IL10")
fig_GDF <- plot_cytokine(df, "GDF-15")
ggsave("FIGURES/Figure6_IL6.pdf", fig_IL6, width=160, height=120, units="mm", device=cairo_pdf, bg="white")
ggsave("FIGURES/Figure6_IL5.pdf", fig_IL5, width=160, height=120, units="mm", device=cairo_pdf, bg="white")
ggsave("FIGURES/Figure6_IL8.pdf", fig_IL8, width=160, height=120, units="mm", device=cairo_pdf, bg="white")
ggsave("FIGURES/Figure6_IL10.pdf", fig_IL10, width=160, height=120, units="mm", device=cairo_pdf, bg="white")
ggsave("FIGURES/Figure6_GDF15.pdf", fig_GDF, width=160, height=120, units="mm", device=cairo_pdf, bg="white")
Figure_7_censored
ggsave("FIGURES/Figure7_Survival_IL6_censored.pdf",
plot = Figure_7_censored$plot,
width = 180, height = 140, units = "mm",
device = cairo_pdf, bg = "white")
F8 <- df %>% select(IL6_J0, NADcum_D0)
# Nonparametric correlation (Spearman)
cor_test_result <- cor.test(F8$IL6_J0, F8$NADcum_D0, method = "spearman", use = "complete.obs")
rho <- round(unname(cor_test_result$estimate), 2)
pval <- signif(cor_test_result$p.value, 2)
F8 <- F8 %>%
mutate(rank_IL6 = rank(IL6_J0, ties.method = "average"),
rank_NAD = rank(NADcum_D0, ties.method = "average"))
Figure8 <- ggplot(F8, aes(x = rank_IL6, y = rank_NAD)) +
geom_point(alpha = 0.7, color = "steelblue") +
geom_smooth(method = "loess", se = TRUE, color = "darkred") +
labs(
title = "Rank–rank association (Spearman)",
x = "IL-6 rank",
y = "Cumulative norepinephrine dose rank"
) +
theme_classic(base_size = 14) +
annotate("text", x = Inf, y = Inf,
label = paste0("Spearman \u03C1 = ", rho, "\nP = ", pval),
hjust = 1.1, vjust = 1.5, size = 4.5)
Figure8
ggsave("FIGURES/Figure8_IL6_vs_NAD_SpearmanRank.pdf",
plot = Figure8,
width = 160, height = 120, units = "mm",
device = cairo_pdf, bg = "white")